8 POKEV+33,1:Q$=CHR$(34):VT$="":DIMVT$(25) 9 FORI=.TO25:VT$(I)=LEFT$(VT$,I+1):NEXT:VT$="" 10 R=53265:C=128:V=53248:S=V+1024:LI=52016:WI=51200:CL=51203:SU=51206:SD=51209 12 POKES+23,.:POKES+4,128 15 GOSUB1000:PRINT" [215]ELCOME TO THIS THIRD INSTALLMENT" 16 PRINT"OF [204]OADSTAR'S [195][207][205][193][204][160]0.14 [212]UTORIAL. [201]N 17 [153]"THE FIRST INSTALLMENT, YOU ENTERED AND 18 PRINT"RAN A SHORT [195][207][205][193][204][160]PROGRAM TO CONVERT 19 [153]"DEGREES ASCARENHEIT INTO DEGREES LENELSIUS 20 PRINT"AND IN THE SECOND YOU LEARNED HOW IT 21 [153]"WORKED. (null)OW, WE WILL LEARN SOME NEW 22 PRINT"[195][207][205][193][204][160]COMMANDS THAT WILL LET US STORE" 23 PRINT"OUR PROGRAMS ONTO OUR DISK DRIVES AND" 24 PRINT"RECALL THEM BACK INTO OUR [195]64'S " 25 PRINT"MEMORY.":S%=-1:GOSUB1200 26 PRINT" [215]E WANT TO MAKE SURE OUR PROGRAM IS 27 [153]"JUST AS WE LEFT IT. (null)RIGHT$(null)(null)CLOSETHE PROGRAM 28 PRINT"TO BE SURE IT IS STILL THERE: 30 [141]1160:[141]1300:X%[178].:Y%[178]16:A$[178]"(null)RIGHT$(null)(null)":[141]1600 31 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]31 32 X%[178]4:Y%[178]16:[141]1500:[139]K$[179][177][199](13)[167]32 33 [153]:[153]"0010 RIGHT$(null)(null)(null)(null) "Q$"STR$VALCHR$(null)VALVAL(null) ASC? "Q$": ASCATN(null)VAL(null)LEFT$VALRIGHT$(null) 34 PRINT"0020 [195][197][204][211][201][213][211]:=([198][193][210][197][206][200][197][201][212]-32)*(5/9) 35 [153]"0030 (null)(null)RIGHT$(null)(null) ASCATN(null)VAL(null)LEFT$VALRIGHT$(null);"Q$"ASC ="Q$";LENVAL(null)(null)RIGHT$(null)(null);"Q$"LEN"Q$"":[141]1035 36 [141]1150:[153]"STOP (null)EP, STILL THERE! MID$UST FOR " 37 [153]"PRACTICE, (null)(null)(null)CLOSETHE PROGRAM AND FIND OUT" 38 [153]"HOW MANY DEGREES LENELSIUS 100 DEGREES " 39 [153]"ASCARENHEIT CONVERTS INTO: 40 GOSUB1160:X%=.:Y%=21:A$="[210][213][206]":GOSUB1600 41 IFETHENA$=MID$(A$,E):E=.:GOSUB1605:GOTO41 42 X%=3:Y%=21:GOSUB1500:IFK$<>CHR$(13)THEN42 43 PRINT:PRINT"[196][197][199][210][197][197][211] [198]? ";: 45 X%=11:Y%=22:A$="100":GOSUB1600 46 IFETHENA$=MID$(A$,E):E=.:GOSUB1605:GOTO46 47 X%=14:Y%=22 48 GOSUB1500:IFK$<>CHR$(13)THEN48 49 PRINT:PRINT"100 [198] = 37.7777778 [195]":GOSUB1700:PRINT"[197][206][196][160][193][212][160]0030";:GOSUB1700:GOSUB1700 50 GOSUB1035:GOSUB1150:PRINT"[144][146] [217]EP! [201]T'S BEEN GETTING AROUND 51 [153]"37.7777778 LEN DOWN HERE IN (null)OUSIANA.":[141]1205 55 [153]" (null)OW RIGHT$'M SURE YOU HAVE TURNED YOUR 56 PRINT"COMPUTER OFF A TIME OR TWO SINCE WE 57 [153]"'WROTE' THIS PROGRAM 2 MONTHS AGO! RIGHT$N 58 PRINT"REAL LIFE, OUR PROGRAM WOULD BE GONE 59 [153]"SINCE TURNING OFF THE COMPUTER ERASES 60 PRINT"IT'S MEMORY! 61 [153]" (null)E NEED A WAY TO KEEP OUR PROGRAMS, 62 PRINT"EVEN WHEN WE TURN OUR COMPUTER OFF. 63 [153]"(null)HAT, OF COURSE, IS WHY YOU SPENT A 64 PRINT"COUPLE OF HUNDRED DOLLARS OR SO ON 65 [153]"THAT DISK DRIVE YOU'VE GOT!":[141]1200 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 [153]" ASCIRST OFF, YOU NEED TO KNOW A FEW 81 PRINT"THINGS. [193] SINGLE FLOPPY DISK CAN HOLD 82 [153]"144 'FILES' OR 168,656 'BYTES' OF " 83 [153]"DATA, WHICHEVER COMES FIRST. ATN 'BYTE' 84 PRINT"IS EQUIVALENT TO A CHARACTER: I.E. A 85 [153]"LETTER, DIGIT, SYMBOL, ETC. ATN 'FILE' 86 PRINT"IS A SET OF BYTES GROUPED TOGETHER AND 87 [153]"GIVEN A NAME. ATN FILE CAN BE A PEEKATN(null)RIGHT$LEN, 88 PRINT"[195][207][205][193][204][160]OR [205]ACHINE [204]ANGUAGE PROGRAM, OR 89 [153]"A GRAPHICS PICTURE, A SET OF SPRITE 90 PRINT"SHAPES, A LIST OF NAMES AND PHONE " 91 PRINT"NUMBERS, OR ANY OTHER SET OF DATA.":GOSUB1200 95 PRINT" [194]EFORE A DISK CAN BE USED TO HOLD 96 [153]"FILES, IT MUST BE 'FORMATTED'. (null)HIS 97 PRINT"USUALLY ONLY NEEDS TO BE DONE ONCE. 98 [153]"ATNMONG OTHER THINGS, THE FORMATTING 99 PRINT"PROCESS GIVES THE DISK A 'NAME' AND AN 100 [153]"'RIGHT$.STR$.'. (null)HE RIGHT$.STR$. IS TWO CHARACTERS, 101 PRINT"CANNOT CONTAIN A ,[146] OR =[146], AND MUST 102 [153]"BE DIFFERENT FOR EACH DISK YOU OWN. 103 PRINT"[212]HE DISK NAME (AND FILE NAMES, TOO) 104 [153]"MAY BE UP TO 16 CHARACTERS LONG WITH 105 PRINT"NO ,[146], =[146], ?[146], OR *[146], AND MAY NOT 106 [153]"BEGIN WITH A #WAIT OR A $WAIT!":[141]1200 110 [153]" ASCORMATTING A DISK IS ACCOMPLISHED 111 PRINT"BY THE DISK DRIVE ITSELF, NOT THE [195]64! 112 [153]"RIGHT$N OTHER WORDS, YOU SIMPLY (null)ATN(null)(null) A " 113 [153]"COMMAND TO THE DISK DRIVE, AND IT DOES 114 PRINT"THE WORK! [201]N [194][193][211][201][195], THIS IS A TEDIOUS 115 [153]"AND INVOLVED PROCESS. RIGHT$N LEN(null)(null)ATN(null), THE 116 PRINT"[208][193][211][211] STATEMENT MAKES IT EASY! [202]UST 117 [153]"THINK OF (null)ATN(null)(null) AS A (null)(null)RIGHT$(null)(null) TO THE DISK 118 PRINT"DRIVE'S 'COMMAND CHANNEL'. [193]NY DISK 119 [153]"DRIVE COMMAND CAN BE (null)ATN(null)(null)ED! 120 : 121 GOSUB1200 125 PRINT" [217]OUR DISK DRIVE'S MANUAL TELLS YOU 126 [153]"THAT TO FORMAT A DISK, THE 'COMMAND 127 PRINT"CHANNEL' MUST BE GIVEN A [206][197][215] COMMAND. 128 [153]"(null)IKE ALL DISK DRIVE 'COMMAND CHANNEL' 129 PRINT"COMMANDS, THIS ONE BEGINS WITH A " 130 PRINT"SINGLE LETTER (IN THIS CASE, [206] FOR" 131 PRINT"[206][197][215]), FOLLOWED BY AN OPTIONAL DRIVE" 132 PRINT"NUMBER (EITHER NONE OR 0 UNLESS YOU" 133 PRINT"HAVE A DUAL-DRIVE UNIT), PLUS A :[146]," 134 PRINT"FOLLOWED BY PARAMETERS. [212]HE " 135 PRINT"PARAMETERS FOR THE [206][197][215] COMMAND ARE" 136 PRINT"THE [206][193][205][197] AND [201][196] FOR THE NEW DISK.":GOSUB1200 140 PRINT" [211]O, A [206][197][215][160]COMMAND TO GIVE OUR DISK 141 [153]"THE NAME 'LEN(null)(null)ATN(null)CLOSE(null)(null)(null)CHR$(null)ATN(null)(null)#1' AND AN RIGHT$STR$" 142 [153]"OF 'LEN1', WOULD BE:" 143 [153]" '(null)0:LEN(null)(null)ATN(null)CLOSE(null)(null)(null)CHR$(null)ATN(null)(null)#1,LEN1'. 144 : 145 : 146 : 147 : 148 PRINT" [211]O HOW DO WE GET THIS COMMAND TO 149 [153]"THE DISK DRIVE'S 'COMMAND CHANNEL'? 150 PRINT"[215]ITH [195][207][205][193][204]'S [208][193][211][211] STATEMENT!":GOSUB1200 155 PRINT" [215]E SIMPLY TYPE '[208][193][211][211]', FOLLOWED BY 156 [153]"THE COMMAND ENCLOSED WITHIN DOUBLE- 157 PRINT"QUOTES. [206]OW TYPE:" 158 PRINT" [208][193][211][211] "Q$"[206]0:[195][207][205][193][204][160][208][210][207][199][210][193][205][211]#1,[195]1"Q$" 159 [153]" (STR$ON'T WORRY..WE'RE (null)(null)(null) GOING TO ":[153]" (null)VAL(null)CLOSEYOUR DISK!) 160 GOSUB1160:GOSUB1300:X%=.:Y%=24:A$="[208][193][211][211] "+Q$+"[206]0:[195][207][205][193][204] [208][210][207][199][210][193][205][211]#1,[195]1"+Q$:GOSUB1600 161 IFETHENA$=MID$(A$,E):E=.:GOSUB1605:GOTO161 162 X%=29:Y%=24:GOSUB1500:IFK$<>CHR$(13)THEN162 163 GOSUB1700:GOSUB1700 165 GOSUB1035:GOSUB1150:GOSUB1220:PRINT"[144][146][196]ONE! [206]OW CHECK STATUS BY TYPING:" 166 PRINT" [211][212][193][212][213][211] 170 [141]1160:X%[178].:Y%[178]24:A$[178]"(null)(null)ATN(null)(null)(null)":[141]1600 171 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]171 172 X%[178]6:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]172 173 [141]1700:[153]"00, (null)(null),00,00";:[141]1700:[141]1700 175 [141]1035:[141]1150:[153]"STOPWAIT(null)URE LOOKS '(null)(null)' TO ME!":[141]1205 180 [153]" ATNFTER FORMATTING A DISK, WE NEED" 181 [153]"NOT DO SO AGAIN. (null)E CAN SAVE UP TO" 182 [153]"144 PROGRAMS ON IT!" 183 : 184 [153]" (null)O SAVE THE CURRENT LEN(null)(null)ATN(null) PROGRAM 185 PRINT"IN MEMORY AS A DISK FILE, USE [195][207][205][193][204]'S 186 [153]"'(null)ATN(null)VAL' COMMAND. (null)E SIMPLY TYPE '(null)ATN(null)VAL' 187 PRINT"FOLLOWED BY OUR DESIRED FILE NAME " 188 PRINT"ENCLOSED IN DOUBLE-QUOTES! [210]EMEMBER," 189 PRINT"A FILE NAME, LIKE A DISK NAME, MAY BE" 190 PRINT"UP TO 16 CHARACTERS LONG.":GOSUB1200 195 PRINT" [211]INCE FILE NAMES MAY NOT CONTAIN" 196 PRINT"A ,[146], =[146], ?[146], OR *[146], AND MAY NOT" 197 PRINT"BEGIN WITH A #[146] OR $[146], LET'S CALL" 198 PRINT"OUR PROGRAM '[195].[195][197][204][211][201][213][211] #1'. [212]O SAVE" 199 PRINT"IT UNDER OUR CHOSEN NAME, TYPE:" 200 PRINT" [211][193][214][197] "Q$"[195].[195][197][204][211][201][213][211] #1"Q$" 205 [141]1160:[141]1300:X%[178].:Y%[178]24:A$[178]"(null)ATN(null)VAL "[170]Q$[170]"LEN.LENVAL(null)(null)RIGHT$(null)(null) #1"[170]Q$:[141]1600 206 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]206 207 X%[178]19:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]207 208 [141]1700:[141]1700:[159]8,8,8,"C.CELSIUS #1,P,W" 209 [135]D%:[139]D%[177][178]0[167][152]8,[199](D%);:[137]209 210 [160]8:[141]1035:[141]1150:[153]"WAITSTOP (null)HERE! (null)OW THAT OUR PROGRAM HAS 211 PRINT"BEEN PLACED SAFELY ON OUR DISK, LET'S 212 [153]"CLEAR OUT LEN(null)(null)ATN(null)'S PROGRAM MEMORY (I.E. 213 PRINT"ERASE OUR PROGRAM FROM MEMORY).":GOSUB1205 215 PRINT" [212]O DO THIS, WE NEED TO USE [195][207][205][193][204]'S 216 [153]"'(null)VAL(null)' COMMAND (NOT TO BE CONFUSED WITH 217 PRINT"THE DISK DRIVE'S '[206][197][215]'). [212]HE [195][207][205][193][204] 218 [153]"'(null)VAL(null)' COMMAND ERASES THE PROGRAM IN":[153]"MEMORY. RIGHT$T DOES (null)(null)(null)"; 219 [153]"AFFECT THE DISKDRIVE.":[153]" ATNFTER A '(null)VAL(null)',"; 220 [153]"THERE IS NO LEN(null)(null)ATN(null)":[153]"PROGRAM IN MEMORY. 221 PRINT"[204]ET'S TRY IT. [212]YPE: 222 [153]" (null)VAL(null)" 225 [141]1160:[141]1300:X%[178].:Y%[178]24:A$[178]"(null)VAL(null)":[141]1600 226 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]226 227 X%[178]3:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]227 228 [141]1700:[141]1700:[141]1035:[141]1150:[158]WI 229 [153]"STOPWAIT(null)KAY, PROGRAM MEMORY IS NOW CLEARED." 230 [153]"(null)ET'S BE SURE. (null)RY THE (null)RIGHT$(null)(null) COMMAND:" 231 : 235 [141]1160:[141]1300:X%[178].:Y%[178]24:A$[178]"(null)RIGHT$(null)(null)":[141]1600 236 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]236 237 X%[178]4:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]237 238 [141]1700:[141]1700:[141]1035:[141]1150 240 [153]"STOPWAIT LEFT$MMM... NOT MUCH THERE, IS THERE? 241 PRINT"[206]OW TRY TO [210][213][206][160]OUR PROGRAM: 245 [141]1160:X%[178].:Y%[178]24:A$[178]"(null)(null)(null)":[141]1600 246 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]246 247 X%[178]3:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]247 248 [141]1700:[141]1700:[141]1035:[141]1150 250 [153]"STOPWAIT (null)TILL NOTHING! RIGHT$ GUESS OUR PROGRAM 251 PRINT"IS GONE FOREVER! 252 [153]" STR$ON'T PANIC! (null)HERE IS (null)(null)RIGHT$(null)(null) OUR 253 PRINT"TRUSTY LITTLE DISK DRIVE. [194]UT HOW DO 254 [153]"WE GET A PROGRAM FROM IT INTO LEN(null)(null)ATN(null)?":[141]1205 255 [153]" ASCIRST, LET'S CHECK THE CONTENTS OF 256 PRINT"THE DISK. [197]ACH DISK HAS A LIST OF THE 257 [153]"FILES THAT ARE ON IT, WHICH IT KEEPS 258 PRINT"IN A SPECIAL PART OF THE DISK CALLED 259 [153]"THE 'CATALOG' (OR 'DIRECTORY'). (null)O 260 PRINT"SEE IT, USE THE '[195][193][212]' COMMAND: 261 [141]1160:[141]1300:X%[178].:Y%[178]24:A$[178]"LENATN(null)":[141]1600 262 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]262 263 X%[178]3:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]263 264 [159]15,8,15:[159]8,8,8,"#":[152]15,"U1:8 0 18 0":[141]1700:[153]"ON 265 PRINT" 0 [146]"Q$"[195][207][205][193][204][160][208][210][207][199][210][193][205][211]#1"Q$" [195]1 2[193]";:GOSUB1700:PRINT"[145] 266 [152]15,"UA:8 0 18 1" 267 [153]" 1 "Q$"LEN.LENVAL(null)(null)RIGHT$(null)(null)CLOSE#1"Q$" (null)(null)CHR$";:[141]1700:[153]"ON 268 PRINT" 663 BLOCKS FREE.";:GOSUB1700:GOSUB1700 269 CLOSE8:CLOSE15:GOSUB1035:GOSUB1150 271 PRINT"[144][146] [212]HE TOP LINE (IN [210][197][214][197][210][211][197][146]) TELLS US 272 [153]"THAT THE CATALOG IS FROM THE DISK IN 273 PRINT"DRIVE #0 (THE 1541 ONLY HAS 1 DRIVE!), 274 [153]"CALLED 'LEN(null)(null)ATN(null)CLOSE(null)(null)(null)CHR$(null)ATN(null)(null)#1' WITH AN RIGHT$STR$ 275 PRINT"OF '[195]1'. [211]OUND FAMILIAR?":GOSUB1205 276 PRINT" [196]ON'T WORRY ABOUT THE '2[193]'. [201]T 277 [153]"SIMPLY MEANS THAT THE DISK IS IN 1541- 278 PRINT"COMPATIBLE FORMAT. [212]HE NEXT LINE IS 279 [153]"EVEN MORE INTERESTING! RIGHT$T TELLS US WE 280 PRINT"HAVE A 1 'BLOCK' FILE BY THE NAME OF 281 [153]"'LEN.LENVAL(null)(null)RIGHT$(null)(null)CLOSE#1', AND THAT SAID FILE IS 282 PRINT"A [208][210]O[199]RAM! [206]OW YOU KNOW WHY [201] HAD US 283 [153]"START OUR FILE NAME WITH 'LEN.'. (null)HERE 284 PRINT"IS NO WAY TO TELL FROM THE CATALOG " 285 PRINT"ALONE WHETHER A [208][210][199] IS [194][193][211][201][195], MACHINE- 286 [153]"LANGUAGE OR LEN(null)(null)ATN(null)!":[141]1200 290 [153]" (null)HE LAST LINE TELLS US THAT WE 291 PRINT"STILL HAVE 663 'BLOCKS' LEFT ON THE 292 [153]"DISK. ATN 'BLOCK'CLOSEIS SIMPLY THE " 293 [153]"SMALLEST 'CHUNK' OF SPACE THAT CAN BE" 294 [153]"ALLOCATED BY THE DISK DRIVE. ATN BLOCK 295 PRINT"HOLDS JUST OVER 250 BYTES. [207]UR " 296 PRINT"PROGRAM, BEING QUITE SMALL, TOOK UP" 297 PRINT"ONLY ONE BLOCK! 298 [153]" (null)KAY, WE KNOW OUR PROGRAM IS ON THE 299 PRINT"DISK. [200]OW DO WE LOAD IT BACK INTO THE 300 [153]"64'S MEMORY? (null)ITH THE '(null)(null)ATNSTR$' COMMAND!":[141]1200 301 [153]" LEN(null)(null)ATN(null)'S '(null)(null)ATNSTR$' COMMAND IS SIMILAR 302 PRINT"TO THE RELATED [211][193][214][197] COMMAND. [207]NE " 303 PRINT"SIMPLY TYPES '[204][207][193][196]' FOLLOWED BY THE " 304 PRINT"FILE NAME OF THE PROGRAM TO [204][207][193][196] " 305 PRINT"ENCLOSED IN DOUBLE-QUOTES. [217]OU TRY" 306 PRINT"IT. [212]YPE: 307 [153]" (null)(null)ATNSTR$ "Q$"LEN.LENVAL(null)(null)RIGHT$(null)(null) #1"Q$" 310 GOSUB1160:GOSUB1300:X%=.:Y%=24:A$="[204][207][193][196] "+Q$+"[195].[195][197][204][211][201][213][211] #1"+Q$:GOSUB1600 311 IFETHENA$=MID$(A$,E):E=.:GOSUB1605:GOTO311 312 X%=19:Y%=24:GOSUB1500:IFK$<>CHR$(13)THEN312 313 GOSUB1700:GOSUB1700:OPEN8,8,.,"C.CELSIUS #1" 314 GET#8,A$:IFST=.THEN314 315 CLOSE8:GOSUB1035:GOSUB1150:PRINT"[144][146][199]OOD! [206]OW [204][201][211][212][160]IT: 320 [141]1160:X%[178].:Y%[178]24:A$[178]"(null)RIGHT$(null)(null)":[141]1600 321 [139]E[167]A$[178][202](A$,E):E[178].:[141]1605:[137]321 322 X%[178]4:Y%[178]24:[141]1500:[139]K$[179][177][199](13)[167]322 323 [141]1700:[153]"0010 RIGHT$(null)(null)(null)(null) "Q$"STR$VALCHR$(null)VALVAL(null) ASC? "Q$": ASCATN(null)VAL(null)LEFT$VALRIGHT$(null)";:[141]1700:[153]"ON 324 PRINT"0020 [195][197][204][211][201][213][211]:=([198][193][210][197][206][200][197][201][212]-32)*(5/9)";:GOSUB1700:PRINT"[145] 325 [153]"0030 (null)(null)RIGHT$(null)(null) ASCATN(null)VAL(null)LEFT$VALRIGHT$(null);"Q$"ASC ="Q$";LENVAL(null)(null)RIGHT$(null)(null);"Q$"LEN"Q$;:[141]1700:[141]1700 326 [141]1035:[141]1150:[153]"STOPWAIT(null)EEMS TO BE ALL THERE!":[141]1205 330 [153]" (null)(null)(null) IT ONCE TO MAKE SURE. LEFT$AVE IT 331 PRINT"CONVERT 32 DEGREES [198]ARENHEIT TO " 332 PRINT"DEGREES [195]ELSIUS:" 335 GOSUB1160:GOSUB1300:X%=.:Y%=24:A$="[210][213][206]":GOSUB1600 336 IFETHENA$=MID$(A$,E):E=.:GOSUB1605:GOTO336 337 X%=3:Y%=24:GOSUB1500:IFK$<>CHR$(13)THEN337 338 GOSUB1700:PRINT"[145]":PRINT"[196][197][199][210][197][197][211] [198]? ";: 339 X%=11:Y%=24:A$="32":GOSUB1600 340 IFETHENA$=MID$(A$,E):E=.:GOSUB1605:GOTO340 341 X%=13:Y%=24 342 GOSUB1500:IFK$<>CHR$(13)THEN342 343 GOSUB1700:PRINT"32 [198] = 0 [195][145]";:GOSUB1700 344 GOSUB1700:PRINT"[197][206][196][160][193][212][160]0030";:GOSUB1700:GOSUB1700 345 GOSUB1035:GOSUB1150:PRINT"[144][146][211]O WATER FREEZES AT 0 [195] (32 [198])! 346 [153]" (null)E HAVE LEARNED QUITE A LOT OF VERY 347 PRINT"IMPORTANT STUFF TODAY! 348 [153]" 1. LEFT$OW TO (null)ATN(null)(null) A (null)VAL(null) COMMAND TO 349 PRINT"DISK DRIVE IN ORDER TO FORMAT A [206][197][215] 350 [153]"DISK, GIVING IT A NAME AND RIGHT$STR$.":[141]1205 351 [153]" 2. LEFT$OW TO (null)ATN(null)VAL A LEN(null)(null)ATN(null) PROGRAM TO 352 PRINT"THE DISK A FILE, BY FILE NAME. 354 [153]" 3. LEFT$OW TO CLEAR OUT LEN(null)(null)ATN(null) MEMORY, 355 PRINT"IN PREPARATION FOR TYPING IN A '[206][197][215]' 356 [153]"PROGRAM. 357 PRINT" 4. [200]OW TO DISPLAY AND UNDERSTAND 358 [153]"THE LENATN(null)ALOG OF A DISK. 359 PRINT" 5. [200]OW TO [204][207][193][196] A PREVIOUSLY-[211][193][214][197]D 360 [153]"PROGRAM INTO MEMORY FROM DISK.":[141]1200 361 [153]" (null)ELL, IT'S THAT TIME AGAIN. (null)IME 362 PRINT"FOR A SHORT QUIZ TO CHECK UP ON " 363 PRINT"CONCEPTS TAUGHT THIS LESSON. [193]S " 364 PRINT"USUAL THE QUESTIONS ARE EITHER TRUE-" 365 PRINT"FALSE OR MULTIPLE-CHOICE. [217]OUR " 366 PRINT"POSSIBLE ANSWERS WILL BE HILIGHTED IN" 367 PRINT"REVERSE[146]. [202]UST PRESS THE CORRECT KEY.":GOSUB1200 370 PRINT"1. [194]EFORE YOU CAN USE A NEW, BLANK 371 [153]"DISK, YOU MUST FIRST: 372 PRINT"  [193] [146] [201]NITIALIZE IT, 373 [153]"  PEEK WAIT ASCORMAT IT, 374 PRINT"  [195] [146] [206]AME AND [201][196] IT, OR 375 [153]"  STR$ WAIT PEEKOTH PEEK AND LEN. 376 GOSUB1300:A$="[196]":W1$="[193]":W2$="[194]":W3$="[195]":GOSUB1800 377 PRINT"[193] NEW DISK MUST BE" 378 PRINT"FORMATTED AND GIVEN A NAME AND [201][196].":GOSUB1205 380 PRINT"2. [212]O FORMAT A NEW DISK AND GIVE IT 381 [153]"A NAME AND RIGHT$STR$ FROM LEN(null)(null)ATN(null), TYPE: 382 PRINT"  [193] [146] [207][208][197][206] 15,8,15,"Q$"[206]0:DISKNAME,ID"Q$ 383 PRINT"  [194] [146] [208][193][211][211] "Q$"[206]0:DISKNAME,ID"Q$ 384 PRINT"  [195] [146] [198][207][210][205][193][212] 0,"Q$"DISKNAME"Q$","Q$"ID"Q$ 385 PRINT"  [196] [146] [206]ONE OF THE ABOVE. 386 [141]1300:A$[178]"PEEK":W2$[178]"STR$":[141]1800:[153]"LEN(null)(null)ATN(null)'S '(null)ATN(null)(null)' STATEMENT 387 PRINT"IS USED TO PASS [206], OR ANY OTHER 388 [153]"DISK DRIVE COMMAND TO THE DRIVE.":[141]1205 390 [153]"3. ATN DISK USUALLY NEEDS TO BE (null)VAL(null)ED 391 PRINT"ONLY ONCE. [212]HE [195][207][205][193][204] PROGRAM IN " 392 PRINT"MEMORY CAN BE WRITTEN TO A DISK WITH" 393 PRINT"SUFFICIENT ROOM BY USING: 394 [153]"  ATN WAIT THE '(null)ATN(null)VAL'CLOSECOMMAND, 395 PRINT"  [194] [146] THE '[215][210][201][212][197]' COMMAND, 396 [153]"  LEN WAIT THE '(null)(null)(null)(null)VAL' COMMAND, OR 397 PRINT"  [196] [146] THE '[212][193][203][197][160][212][200][193][212]!' COMMAND. 398 [141]1300:A$[178]"ATN":W1$[178]"PEEK":[141]1800:[153]"(null)HE '(null)ATN(null)VAL' COMMAND WRITES, 399 PRINT"OR SAVES, A [195][207][205][193][204] PROGRAM.":GOSUB1205 400 PRINT"4. [212]O CLEAR THE [195][207][205][193][204][160]PROGRAM MEMORY 401 [153]"SPACE, USE: 402 PRINT"  [193] [146] THE '[195][204][197][193][210]' COMMAND. 403 [153]"  PEEK WAIT THE 'VAL(null)ATN(null)VAL'CLOSECOMMAND. 404 PRINT"  [195] [146] THE '[206][197][215]' COMMAND, OR 405 [153]"  STR$ WAIT THE 'LENATN(null)' COMMAND. 406 GOSUB1300:A$="[195]":W3$="[193]":GOSUB1800:PRINT"[212]HE [206][197][215][160]COMMAND CLEARS THE 407 [153]"LEN(null)(null)ATN(null)CLOSEPROGRAM SPACE, USUALLY SO YOU 408 PRINT"CAN START TYPING IN A [206][197][215] PROGRAM.":GOSUB1205 410 PRINT"5. [212]O FIND OUT WHAT IS ON A DISK, 411 [153]"JUST USE: 412 PRINT"  [193] [146] THE '[204][201][211][212]' COMMAND, 413 [153]"  PEEKCLOSEWAIT THE '(null)ATN(null)(null)CLOSE"Q$"$"Q$"' COMMAND, 414 PRINT"  [195] [146] THE '[206][197][215]' COMMAND, OR 415 [153]"  STR$ WAIT THE 'LENATN(null)' COMMAND. 416 GOSUB1300:A$="[196]":W2$="[195]":GOSUB1800:PRINT"[212]O SEE WHAT IS ON THE DISK 417 [153]"YOU HAVE TO LOOK AT ITS LENATN(null)ALOG. (null)HE 418 PRINT"[195][207][205][193][204][160]'[195][193][212]' COMMAND DISPLAYS SAID " 419 PRINT"[195][193][212]ALOG.":GOSUB1205 420 PRINT"6. [212]O RETRIEVE A [195][207][205][193][204] PROGRAM THAT 421 [153]"WAS (null)ATN(null)VALD TO DISK, USE: 422 PRINT"  [193] [146] THE '[197][206][212][197][210]' COMMAND, 423 [153]"  PEEK WAIT THE '(null)(null)STR$'CLOSECOMMAND, 424 PRINT"  [195] [146] THE '[204][207][193][196]' COMMAND, OR 425 [153]"  STR$ WAIT THE 'CHR$VAL(null)CLOSERIGHT$(null)CLOSELEFT$VAL(null)VAL!' COMMAND. 426 GOSUB1300:A$="[195]":W2$="[196]":GOSUB1800:PRINT"[217]OU [204][207][193][196] A PROGRAM INTO 427 [153]"MEMORY THAT WAS (null)ATN(null)VALD TO DISK!":[141]1205 430 [153]"7. (null)HICH OF THE FOLLOWING IS A LEGAL 431 PRINT"FILE NAME? 432 [153]"  ATN WAIT 'LEN.(null)LEFT$ATN(null)CLOSEATNCLOSE(null)(null)(null)CHR$(null)ATN(null)!' 433 PRINT"  [194] [146] '[195][207][205][193][204][160][208][210][199][160]#1' 434 [153]"  LEN WAIT '#1 LEN(null)(null)ATN(null)CLOSE(null)(null)CHR$' 435 PRINT"  [196][160][146] '[195][207][205][193][204][160][208][210][199], [206][207]. 1' 436 [141]1300:A$[178]"PEEK":W1$[178]"LEN":[141]1800:[153]"(null)EMEMBER, A FILE NAME CAN 437 PRINT"[206][207][212][160]HAVE MORE THAN 16 CHARACTERS (LIKE 438 [153]"ATN), START WITH '#' OR '$'CLOSE(LIKE LEN) NOR 439 PRINT"CONTAIN ,[146], =[146], ?[146], OR *[146] (LIKE [196]). 440 [141]1205 445 [153]"8. '* LEN(null)(null)ATN(null)CLOSE(null)(null)(null)ASCASCCLOSE*' IS A LEGAL DISK 446 PRINT"NAME, BUT AN ILLEGAL FILE NAME. 447 [153]"  (null) WAITRUE OR  ASC WAITALSE? 448 GOSUB1300:A$="[212]":W1$="[198]":W2$="[198]":W3$="[198]":GOSUB1800 449 PRINT"[212]HE CHARACTERS ?[146] AND *[146] 450 [153]"ARE OKAY IN DISK NAMES, BUT ILLEGAL IN 451 PRINT"FILE NAMES.":GOSUB1205 455 PRINT"9. [201]T IS IN YOUR BEST INTERESTS TO 456 [153]"GIVE EACH DISK YOU FORMAT THE SAME RIGHT$STR$. 457 PRINT"  [212] [146]RUE OR  [198] [146]ALSE 458 [141]1300:A$[178]"ASC":W1$[178]"(null)":W2$[178]"(null)":W3$[178]"(null)":[141]1800 459 [153]"(null)HE RIGHT$STR$CLOSEIS WHAT THE DRIVE 460 PRINT"USES TO SEE IF YOU HAVE THE SAME DISK 461 [153]"IN THE DRIVE BEFORE (null)ATN(null)VALING OR OTHER 462 PRINT"WRITING. [201]F TWO [201][196]'S ARE THE SAME, 463 [153]"THE DRIVE MIGHT WRITE OVER SPACE THAT 464 PRINT"WAS FREE ON THE [207][212][200][197][210] DISK!":GOSUB1205 465 PRINT"10. [212]HE '[195].' OF '[195].[195][197][204][211][201][213][211][160]#1', OUR 466 [153]"PROGRAM'S FILE NAME, TELLS THE DRIVE 467 PRINT"THAT IT IS A [195][207][205][193][204] PROGRAM. 468 [153]"  (null)CLOSEWAITRUE OR  ASC WAITALSE? 469 GOSUB1300:GOSUB1800:PRINT"[201]T TELLS [213][211][160]THAT IT IS A 470 [153]"LEN(null)(null)ATN(null) PROGRAM, WHEN WE READ THE" 471 [153]"LENATN(null)ALOG. (null)HE DISK DRIVE DOESN'T NEED" 472 [153]"TO KNOW!":[141]1205 550 [153]" (null)HAT IS ALL FOR THIS ISSUE. (null)F THE 551 PRINT"10 QUESTIONS IN OUR LITTLE QUIZ, YOU 552 [153]"ANSWERED"SC%"CORRECTLY. 553 IFSC%<10THEN560 554 PRINT" [201][160]KNOW A PERFECT SCORE WHEN [201] SEE 555 [153]"ONE! (null)OU ARE DEFINITELY READY FOR 556 PRINT"NEXT ISSUE'S LESSON!":GOTO600 560 IFSC%<7THEN570 561 PRINT" [217]OU DID RATHER WELL! [201] SUGGEST YOU 562 [153]"OBTAIN A COPY OF LEN(null)(null)ATN(null) 0.14 (IF YOU 563 PRINT"DO NOT HAVE ONE ALREADY) AND PRACTICE 564 [153]"THE CONCEPTS TAUGHT THIS LESSON. (null)OU 565 PRINT"WILL THEN BE READY FOR NEXT ISSUE'S 566 [153]"LESSON.":[137]600 570 [153]" (null)OU DO NOT SEEM TO HAVE CAUGHT ON 571 PRINT"TO MANY OF THE CONCEPTS PRESENTED THIS 572 [153]"LESSON. (null)E-TAKE THIS TUTORIAL, THEN":[137]562 600 [153]VT$(15)"CLR (null)RESS SPACE BAR TO RETURN TO (null)OADSTAR! ":[141]1300:[151]198,.:[146]198,1 601 [151]198,.:[141]1400:[151]V[170]33,.:[153]"LOADSTOPLOAD"Q$"HELLO"Q$",8":[153]"RUN" 605 [151]631,13:[151]632,13:[151]198,2 999 [128]: 1000 [151]V[170]33,1:[153]"LOAD LEN(null)(null)ATN(null)CLOSE0.14 (null)UTORIAL RIGHT$NSTALLMENT #3" 1005 [153]"STOPORTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTAN^";:[129]I[178]1[164]12 1010 [153]"(null) (null)";:[130]: 1015 [153]"/TANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANTANEXP 1020 PRINTVTAB$(14):FORI=1TO9:PRINT" "; 1025 NEXT:GOSUB1050 1030 FORI=217TO242:POKEI,PEEK(I)OR128:NEXT: 1035 POKE1020,2:POKE1021,13:POKE1022,1:POKE1023,38:RETURN: 1050 PRINTVT$(24)" [146]"; 1055 POKE2023,160:POKE56295,6:RETURN: 1100 GOSUB1160 1110 PRINTVT$(Y%-1):PRINTTAB(X%);:RETURN: 1150 X%=SX%:Y%=SY%:GOTO1110 1160 SX%=PEEK(211):SY%=PEEK(214):RETURN: 1200 GOSUB1300 1205 PRINTVT$(14):PRINTTAB(3)"[129] [208]RESS SPACE BAR FOR NEXT PAGE. " 1210 POKE198,.:WAIT198,1:POKE198,. 1215 PRINTVT$(14):PRINTTAB(3)" " 1220 GOTO1400 1300 POKE646,15:WAITR,C:WAITR,C:SYSCL:POKE646,12:WAITR,C:WAITR,C:SYSCL 1305 POKE646,11:WAITR,C:WAITR,C:SYSCL:POKE646,.:WAITR,C:WAITR,C:SYSCL:RETURN: 1400 POKE646,11:WAITR,C:WAITR,C:SYSCL:POKE646,12:WAITR,C:WAITR,C:SYSCL 1405 POKE646,15:WAITR,C:WAITR,C:SYSCL:WAITR,C:WAITR,C:SYSWI:RETURN: 1500 GOSUB1110:F%=-1:L%=PEEK(209)+256*PEEK(210)+PEEK(211):C%=PEEK(L%) 1505 POKEL%,-F%*(PEEK(L%)AND127)-(NOTF%)*(PEEK(L%)OR128):F%=NOTF% 1510 FORF=1TO48:GETK$:IFK$=""THENNEXT:GOTO1505 1512 IFK$="[160]"THENK$=" ":REM SHIFT-SPACE TO SPACE! 1515 F=256:NEXT:POKEL%,C%:IFK$>"@"ANDK$<"["THENK$=CHR$(ASC(K$)+128) 1520 RETURN: 1600 AX%=X%:AY%=Y% 1605 FORA=1TOLEN(A$) 1606 GOSUB1500:IFK$=MID$(A$,A,1)THENPRINT""K$;:POKE212,.:POKE216,.:X%=X%+1:NEXT:RETURN: 1607 IFK$=CHR$(13)THEN1606 1610 E=A:E$=MID$(A$,E,1):A=256:NEXT: 1615 PRINT"";:POKE212,1:POKE216,1:PRINTK$;:POKE212,.:POKE216,.:GOSUB1150 1620 POKEV+32,2:PRINT"[207][207][208][211]! [217]OU MISSED THE [150] "E$"  KEY!":GOSUB1900:GOSUB1150 1625 POKEV+32,5:PRINT"[206]OW PRESS THE [153] [201][206][211][212]-[196][197][204]  KEY ONCE: ":X%=AX%+E:Y%=AY% 1630 GOSUB1500:IFK$<>""THEN1630 1635 GOSUB1150:POKEV+32,14:PRINT"[154][206]OW FINISH TYPING![146] " 1640 AX%=AX%+E-1:X%=AX%:Y%=AY%:RETURN: 1700 POKE1020,16:POKE1021,24:POKE1022,.:POKE1023,39 1705 SYSSU:GOSUB1050:X%=.:Y%=24:GOTO1110: 1800 GOSUB1160 1805 X%=.:Y%=24:GOSUB1500:IFK$<>A$ANDK$<>W1$ANDK$<>W2$ANDK$<>W3$THEN1805 1810 GOSUB1035:GOSUB1150:PRINT: 1815 IFK$=A$THENPRINT" [195][207][210][210][197][195][212]! [146][144] ";:SC%=SC%+1:RETURN: 1820 PRINT" [211]ORRY. [146][144] ";:RETURN: 1900 FORP=1TO2048:NEXT:RETURN: 9000 DATA69,,79,,98,,,10,22,181,3,11,68,69,71,82,69,69,83,32,70,63,32,183,7,1 9005 DATA184,187,,20,22,7,2,4,1,2,,32,41,71,2,,5,2,,9,35,71,36,58,,30,25,95,4,1 9010 DATA100,103,3,3,70,32,61,101,103,4,2,100,103,3,1,67,101,96,97,16,252,175,, 9015 DATA16,247,175,,,9,70,65,82,69,78,72,69,73,84,7,67,69,76,83,73,85,83,,,-1